<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
        //把js文件内容放在最后面即可。或者在script标签中加上defer即可

        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）
        //ECMAScript是javascript中的基础语法与规范！DOM是将javascript文件结合html+css内容渲染到网页上面的一种功能：比如获取点击事件还有获取html标签等等；
        //而BOM是开发者可以操控浏览器显示页面之外的部分。而它最独特的地方，就是问题最多的地方，激素它唯一一个没有相关标注的javascript实现

        // 3.JavaScript 的数据类型有哪些？（5）
        //分为两种数据类型：简单数据类型与引用数据类型；简单数据类型又可分为：数字类型，Boolean类型，字符串类型，undefined类型，Nall类型；引用数据类型可分为：对象类型，函数类型，数字类型

        // 4.如何进行数据类型的判断？（5）
        //用tpyeof，或者Object.prototype.toString.call(检测的变量名)

        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
        //null是一个空值的对象；undefined是一个空值的数据类型，undefined定义了一个变量但没有赋值，当定义了一个变量但没有赋值就会出现undefined

        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）
        //null == undefined 返回 true是因为它们两个的结果都是为空值nall所以为true，而三个等号需要的条件是值与数据类型都要完全相同，故null === undefined 返回 false；

        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
        //continue是停止当次循环，符合条件的下一次循环还会执行；而break是终止整个循环体；只要遇到break就会终止循环。

        // 8.如何判断字符串内是否包含指定字符？（5）

        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
        //instanceof访问数组成员---不会修改原数组  concat连接(合并) 两个或多个数组---不会修改原数组  join()将数组转为字符串--不会修改原数组
        //slice()截取数组成员---会改变原数组  splice()获取数组规定范围之内的值---不会修改原数组

        // 10. 请写出下面语句的输出结果：（5）
        // var bar = true,
        //     number = 0;
        // console.log(bar + 0); //1
        // console.log(bar + "xyz"); //"truexyz"
        // console.log(bar + true); //2
        // console.log(+true); //1
        // console.log(!'bluej'); //"!bluej"
        // console.log(number++); //0
        // console.log(++number); //2
        // console.log(number); //2

        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提示（5）
        // window.prompt("请输入目标时间");
        // let y, mon, d, h, m, s;

        // function timeFn() {
        //     let nowD = new Date();
        //     // console.clear(); // 清空日志
        //     y = nowD.getFullYear(); // 年
        //     mon = nowD.getMonth() + 1; // 月
        //     d = nowD.getDate(); // 日
        //     h = nowD.getHours(); // 时
        //     m = nowD.getMinutes(); // 分
        //     s = nowD.getSeconds(); // 秒

        //     // console.log(y + "年" + mon + "月" + d + "日" + h + "时" + m + "分" + s + "秒");
        // };
        // let timer = window - (y, mon, d, h, m, s);
        // if (timer = window - (y, mon, d, h, m, s)) {
        //     console.log(timer);
        // }

        // setInterval(function() {
        //     timeFn();
        // }, 1000);
        // // console.log(timer);


        // 12.把下面数组成员排序打乱；（5）
        // var arr = [10, 20, 30, 40, 50, 60];
        // var newArr = [];
        // for (i = 0; i < arr.length; i++) {
        //     let ran = Math.floor(Math.random() * arr.length);
        //     if (!newArr.includes(arr[ran])) {
        //         newArr.push(arr[ran]);
        //     } else {
        //         i--;
        //     }
        // }
        // console.log(newArr);

        // 13.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）


        // 14. 将多个数组进行去重合并；（10）
        // var arr1 = [1, 2, 3],
        //     arr2 = [2, 3, 4, 5];
        // var arr3 = [];
        // var arr4 = [];
        // arr3 = arr1.concat(arr2)
        // for (i = 0; i < arr3.length; i++) {
        //     if (arr4.indexOf(arr3[i]) == -1) {
        //         arr4.push(arr3[i]);
        //     }
        // }
        // console.log(arr4);

        // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
        let arr = [1, 2, 3, "melon", 4, "melon", 2, 4, "melon"];
        let newArr = [];
        let num = [];
        let count = 0;
        arr.forEach(function(item, index) {
            if (newArr.includes(item) == false) {
                newArr.push(item);
            } else {
                num.push(item);
            }
        });
        for (let i = 0; i < arr.length; i++) {
            if (arr[i] == 2) {
                count++;
            }
        }
        console.log(num);
        console.log(2 + "出现了" + count + "次");
        // 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
        // var arr = [{
        //     name: "111",
        //     sex: "boy",
        //     age: 18,
        //     count: 20
        // }, {
        //     name: "222",
        //     sex: "girl",
        //     age: 17,
        //     count: 30
        // }, {
        //     name: "333",
        //     sex: "boy",
        //     age: 16,
        //     count: 40
        // }, {
        //     name: "444",
        //     sex: "girl",
        //     age: 15,
        //     count: 50
        // }, {
        //     name: "555",
        //     sex: "boy",
        //     age: 20,
        //     count: 60
        // }, {
        //     name: "666",
        //     sex: "girl",
        //     age: 13,
        //     count: 70
        // }, {
        //     name: "777",
        //     sex: "boy",
        //     age: 14,
        //     count: 80
        // }]
    </script>
</body>

</html>